package com.tongtech.system.service;

import com.tongtech.system.domain.Industry;
import com.tongtech.system.domain.vo.IndustryTreeSelect;

import java.util.List;

/**
 * 行业管理 服务层
 *
 * @author xingyc
 */
public interface IIndustryService
{
    /**
     * 查询行业管理数据
     *
     * @param industry 行业信息
     * @return 行业信息集合
     */
    public List<Industry> selectIndustryList(Industry industry);

    /**
     * 查询行业树结构信息
     *
     * @param industry 行业信息
     * @return 行业树信息集合
     */
    public List<IndustryTreeSelect> selectIndustryTreeList(Industry industry);

    /**
     * 构建前端所需要树结构
     *
     * @param industrys 行业列表
     * @return 树结构列表
     */
    public List<Industry> buildIndustryTree(List<Industry> industrys);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param industrys 行业列表
     * @return 下拉树结构列表
     */
    public List<IndustryTreeSelect> buildIndustryTreeSelect(List<Industry> industrys);

    /**
     * 根据行业ID查询信息
     *
     * @param industryId 行业ID
     * @return 行业信息
     */
    public Industry selectIndustryById(Long industryId);

    /**
     * 根据ID查询所有子行业（正常状态）
     *
     * @param industryId 行业ID
     * @return 子行业数
     */
    public int selectNormalChildrenIndustryById(Long industryId);

    /**
     * 是否存在行业子节点
     *
     * @param industryId 行业ID
     * @return 结果
     */
    public boolean hasChildByIndustryId(Long industryId);

    /**
     * 校验行业名称是否唯一
     *
     * @param industry 行业信息
     * @return 结果
     */
    public boolean checkIndustryNameUnique(Industry industry);


    /**
     * 新增保存行业信息
     *
     * @param industry 行业信息
     * @return 结果
     */
    public int insertIndustry(Industry industry);

    /**
     * 修改保存行业信息
     *
     * @param industry 行业信息
     * @return 结果
     */
    public int updateIndustry(Industry industry);

    /**
     * 删除行业管理信息
     *
     * @param industryId 行业ID
     * @return 结果
     */
    public int deleteIndustryById(Long industryId);
}
